# -*- coding: utf-8 -*-
import logging
import time
#字符串数据写入
from logging import handlers

date=str(time.strftime("%Y-%m-%d", time.localtime()))
log_file_path = {
    'debug_path': 'E:\pythonLog\python_log_' + date + ".log",
    'info_path': 'E:\pythonLog\python_log_' + date + ".log",
    'data_path': 'E:\pythonLog\python_datalog_' + date + ".log",
    'warning_path': 'E:\pythonLog\python_log_' + date + ".log",
    'error_path': 'E:\pythonLog\python_errorlog_' + date + ".log",
    'crit_path': 'E:\pythonLog\python_errorlog_' + date + ".log",

}

#日志级别关系映射
class Logger(object):
    '''
    日志级别： debug < info < warning < error < critical
    debug级别，最低级别，一般开发人员用来打印一些调试信息
    info级别，正常输出信息，一般用来打印一些正常的操作
    waring级别，一般用来打印警信息
    error级别，一般用来打印一些错误信息
    critical级别，一般用来打印一些致命的错误信息, 等级最高
    '''
    level_relations = {
        'debug':logging.DEBUG,
        'info':logging.INFO,
        'warning':logging.WARNING,
        'error':logging.ERROR,
        'crit':logging.CRITICAL
    }


    def __init__(self,filename,level='debug',when='D',backCount=3,fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'):
        filename=log_file_path.get('debug_path')
        self.logger = logging.getLogger(filename)
        if not self.logger.handlers:
            format_str = logging.Formatter(fmt)#设置日志格式
            self.logger.setLevel(self.level_relations.get(level))#设置日志级别
            sh = logging.StreamHandler()#往屏幕上输出
            sh.setFormatter(format_str) #设置屏幕上显示的格式
            th = handlers.TimedRotatingFileHandler(filename=filename,when=when,backupCount=backCount,encoding='utf-8')#往文件里写入#指定间隔时间自动生成文件的处理器

            #实例化TimedRotatingFileHandler
            #interval是时间间隔，backupCount是备份文件的个数，如果超过这个个数，就会自动删除，when是间隔的时间单位，单位有以下几种：
            # S 秒
            # M 分
            # H 小时、
            # D 天、
            # W 每星期（interval==0时代表星期一）
            # midnight 每天凌晨
            th.setFormatter(format_str)#设置文件里写入的格式
            self.logger.addHandler(sh) #把对象加到logger里
            self.logger.addHandler(th)
'''
@msg：打印内容
@type:日志类型
@fileType:1-是否记录sql
@info:sql
'''
def logInfo(msg,type=None,fileType=None,info=None):
    log = Logger(log_file_path.get('debug_path'),level='debug')
    path = log_file_path.get('data_path')
    if type == 'info':
        log.logger.info(msg)
    elif type == 'debug':
        log.logger.debug(msg)
    elif type == 'warning':
        log.logger.warning(msg)
    elif type == 'error':
        log.logger.error(msg)
    elif type == 'critical':
        log.logger.critical(msg)
    if fileType == 1:
        with open(path, 'a',encoding='utf-8') as f:
            if not msg.endswith(';'):
                info=info+';'
            f.write(info+'\n'+'\n')
        log.logger.info('sql语句已成功记录！')


if __name__ == '__main__':
    str="adadadawow;"
    if not str.endswith(';'):
        print(1)
    else:
        print(2)

    print(str.endswith(';'))
    logInfo('ssss','warning')
    #Logger('E:\pythonLog\python_errorlog.log', level='error').logger.error('error')
    print(date)


